$(document).ready(function () {
	$.extend({
		/**
		 * 说明：	kchart函数用来ajax获得统计数据，生成统计数据表格和统计图。
		 * 原理：	先ajax获得统计数据（json格式，按照自定义的规则生成json数据），然后js处理数据生成对应的table网页代码添加到body对应元素（chart_warpperID）中。
		 * 		 	最后调用jquery 插件（visualize）通过table中的数据生成统计图。 
		 * 注意：定义参数时{}，中的最后一项不能加“,”
		 * 网页代码格式：
		 * <div id="chartWarpperID"></div>
		 * <div id="tableWrapperID"></div>	
		 */
	　　kchart:function(options) {
				//alert("call kajax!");
				var defaults = {
						chartWidth : "550",//报表宽度
						chartHeight: "240",//报表高度
						title:'',//报表名称
						tableWrapperID:'',//表格数据table所在的html元素的id
						tableID:'',//表格数据ID
						ifTableDisplay:false,//是否显示生成table，列表方式显示统计数据
						chartWarpperID:'',//统计图显示位置
						chartStyle:'',//统计图样式  取值参见visualize相关参数
						url:'',//ajax获取数据路径
						ifChangeXY:false,
						doAfterTableInit:null,//统计表格生成后调用的js函数，调用将传 opts 当函数中可进行调用。
						data:null, //url参数
						debug:false
				};

				var opts=$.extend(defaults,options);
				//alert(opts.data.pid);
				var initChartData= function(data_desc,data_stat,data_page){
					var html_title = "";
					var html_data = "";
					var vo,vs,temp;
					if(opts.ifChangeXY==true){
						for (vo in data_stat){
							temp = vo;
							if(temp==null||temp=='null')temp='其他';
							html_title = html_title+'<th class="line_l" style="text-align: center;">'+temp+'</th>';
						}
						//alert(html_title);
						var i = 0;
						for (vo in data_desc){
							html_data = html_data+'<tr>';
							html_data = html_data+'<th class="first" style="text-align: center;">'+data_desc[vo]+'</th>';
							for (vs in data_stat){
								temp = data_stat[vs][i];
								html_data = html_data+'<td style="text-align: center;">'+temp+'</td>';	
							}
							html_data = html_data+'</tr>';
							i++;
						}
					}else{
						for (vo in data_desc){
							temp = data_desc[vo];
							if(temp==null||temp=='null')temp='其他';
							html_title = html_title+'<th class="line_l" style="text-align: center;">'+temp+'</th>';
						}
						//alert(html_title);
						for (vo in data_stat){
							html_data = html_data+'<tr>';
							html_data = html_data+'<th class="first" style="text-align: center;">'+vo+'</th>';
							for (vs in data_stat[vo]){
								temp = data_stat[vo][vs];
								html_data = html_data+'<td style="text-align: center;">'+temp+'</td>';	
							}
							html_data = html_data+'</tr>';
						}
					}
					//alert(html_data);
					var tablestyle = opts.ifTableDisplay?'':'display:none;';
					var html_='<table width="100%" border="0" cellspacing="0" cellpadding="0" style="'+tablestyle+'" id="'+opts.tableID+'">'
								+'<caption>'+opts.title+'</caption>'
									+'<thead>'
										+'<tr>'
										+'<td class="first" style="text-align: center;"><img width="20" height="20" style="vertical-align: middle;" src="/Public/shanghu/images/chart_32.png"></td>'
										+ html_title
										+'</tr>'
									+'</thead>'
									+'<tbody>'
										+ html_data
									+'</tbody>'
								+'</table>';
					if(data_page!=''){
						data_page = '<div style="padding: 20px 0;text-align:center;'+tablestyle+'"><div class="page_box">'+data_page+'</div></div>';
					}
						
					$('#'+opts.tableWrapperID).html(html_+data_page);

					//条件分页代码
					//$('#'+opts.tableWrapperID).html(html_);<div style="padding: 20px 0;text-align:center;">
				}
				
				//setChart(b, a, c) setChart('table#graph_data1', 'bar', '#chart_wrapper1');
				var showChart=function() {
					//alert(1);[ "#7EC421", "#9FBAD4" ]['#be1e2d','#666699','#92d5ea','#ee8310','#8d10ee','#5a3b16','#26a4ed','#f45a90','#e9e744']
					$('#'+opts.chartWarpperID).html("");
					$('table#'+opts.tableID).visualize({
						type : opts.chartStyle,
						width : opts.chartWidth,
						height : opts.chartHeight,
						colors : [ "#7EC421", "#9FBAD4",'#be1e2d','#666699','#92d5ea','#ee8310','#8d10ee','#5a3b16','#26a4ed','#f45a90','#e9e744' ]
					}).appendTo('#'+opts.chartWarpperID);
					if (navigator.appName == "Microsoft Internet Explorer") {
						$(".visualize").trigger("visualizeRefresh");
					}
					var doAfterTableInit_fun = opts.doAfterTableInit;
					if(doAfterTableInit_fun!=null)doAfterTableInit_fun(opts);
				}
				var loading_html = 	'<div style="text-align: center;margin:auto;margin-top:'+(opts.chartHeight/2-20)+'px;">'+
						        	'<img src="/Public/Images/global/loading.gif"><span style="font-size:14px;">&nbsp;数据处理中...'+
						    		'</span></div>';
				var getChartData=function(){
					$('#'+opts.chartWarpperID).html(loading_html);
					$.kajax({      
						ajx_rtn_type:'JSON',
						url: opts.url,      
						type:'post', //数据发送方式  
						data: opts.data ,    
						async: false ,//同步方式     
						success: function(objson){
										if(objson.status==1){
											var ifinit,vo,temp,vo1;
											var data_orgi = new Array();
											var data_desc = new Array();
											var data_stat = new Array();
											var statdata = objson.data.statdata;
											var statsort = objson.data.statsort;
											var statpage = objson.data.pagenavhtml;
											if(statpage==null||statpage==undefined){
												statpage = '';
											}
											for(var i=0;i<statdata.length;i++){
												ifinit = false;
												for (vo in data_orgi){
													if(vo==statdata[i].xlabel){
														ifinit = true;
														break;
													}
												}
												if(ifinit==false)data_orgi[statdata[i].xlabel] = new Array();
												data_orgi[statdata[i].xlabel][statdata[i].ylabel] = statdata[i].sum;
							    			}

											for(vo in data_orgi){
												data_desc[data_desc.length] = vo;
												if(statsort==null||statsort==undefined){
													
												}else{
													for(var j=0;j<statsort.length;j++){
														ifinit = false;
														temp = data_orgi[vo][statsort[j]];
														if(temp==null||temp==undefined)temp=0;
														for (vo1 in data_stat){
															if(vo1==statsort[j]){
																ifinit = true;
																break;
															}
														}
														if(ifinit==false)data_stat[statsort[j]] = new Array();
														data_stat[statsort[j]][data_stat[statsort[j]].length] = temp;
													}
												}
											}
											
											initChartData(data_desc,data_stat,statpage);
											showChart();
										}else{
											k_error(objson.msg);
										}
						}
					});
				}
				
				getChartData();
		}
	});
});